home *** CD-ROM | disk | FTP | other *** search
/ Belgian Amiga Club - ADF Collection / BS1 part 26.zip / BS1 part 26 / Aztec C v5.2a disk 4.adf / 204inc_i.lzh / exec / tasks.i < prev    next >
Text File  |  1991-03-14  |  4KB  |  131 lines

  1.     IFND    EXEC_TASKS_I
  2. EXEC_TASKS_I    SET    1
  3. **
  4. **    $Filename: exec/tasks.i $
  5. **    $Release: 2.04 $
  6. **    $Revision: 36.8 $
  7. **    $Date: 90/10/22 $
  8. **
  9. **    Task Control Block, Signals, and Task flags.
  10. **
  11. **    (C) Copyright 1985,1986,1987,1988,1989 Commodore-Amiga, Inc.
  12. **        All Rights Reserved
  13. **
  14.  
  15.     IFND EXEC_NODES_I
  16.     INCLUDE "exec/nodes.i"
  17.     ENDC    ; EXEC_NODES_I
  18.  
  19.     IFND EXEC_LISTS_I
  20.     INCLUDE "exec/lists.i"
  21.     ENDC    ; EXEC_LISTS_I
  22.  
  23.     IFND EXEC_PORTS_I
  24.     INCLUDE "exec/ports.i"
  25.     ENDC    ; EXEC_PORTS_I
  26.  
  27.  
  28. *----------------------------------------------------------------
  29. *
  30. *    Task Control Structure
  31. *
  32. *    Please use Exec functions to modify task structure fields,
  33. *    where available.
  34. *
  35. *----------------------------------------------------------------
  36.  
  37.  STRUCTURE  TC_Struct,LN_SIZE        ; was "TC"
  38.     UBYTE   TC_FLAGS
  39.     UBYTE   TC_STATE
  40.     BYTE    TC_IDNESTCNT        ; intr disabled nesting
  41.     BYTE    TC_TDNESTCNT        ; task disabled nesting
  42.     ULONG   TC_SIGALLOC        ; sigs allocated
  43.     ULONG   TC_SIGWAIT            ; sigs we are waiting for
  44.     ULONG   TC_SIGRECVD        ; sigs we have received
  45.     ULONG   TC_SIGEXCEPT        ; sigs we take as exceptions
  46.     ;* Pointer to an extended task structure.  This structure is allocated
  47.     ;* by V36 Exec if the proper flags in tc_ETaskFlags are set.  This
  48.     ;* field was formerly defined as:
  49.     ;*        UWORD    TC_TRAPALLOC        ; traps allocated
  50.     ;*        UWORD    TC_TRAPABLE        ; traps enabled
  51.     ;* Please see the Exec AllocTrap() and FreeTrap() calls.
  52.     ;*
  53.     APTR    tc_ETask            ; pointer to extended task structure
  54.     APTR    TC_EXCEPTDATA        ; data for except proc
  55.     APTR    TC_EXCEPTCODE        ; exception procedure
  56.     APTR    TC_TRAPDATA        ; data for proc trap proc
  57.     APTR    TC_TRAPCODE        ; proc trap procedure
  58.     APTR    TC_SPREG            ; stack pointer
  59.     APTR    TC_SPLOWER            ; stack lower bound
  60.     APTR    TC_SPUPPER            ; stack upper bound + 2
  61.     FPTR    TC_SWITCH            ; task losing CPU (function pointer)
  62.     FPTR    TC_LAUNCH            ; task getting CPU (function pointer)
  63.     STRUCT  TC_MEMENTRY,LH_SIZE     ; Allocated memory list.  Freed by RemTask()
  64.     APTR    TC_Userdata            ; For use by the task; no restrictions!
  65.     LABEL   TC_SIZE
  66.  
  67.  
  68. ;Don't even _think_ about allocating one of these yourself.
  69.  STRUCTURE    ETask,MN_SIZE
  70.         APTR    et_Parent        ;Pointer to task (TC)
  71.         ULONG    et_UniqueID        ;ID unique to this task
  72.         STRUCT    et_Children,MLH_SIZE    ;List of children
  73.         UWORD    et_TRAPALLOC
  74.         UWORD    et_TRAPABLE
  75.         ULONG    et_Result1        ;First result
  76.         APTR    et_Result2        ;Result data pointer (AllocVec)
  77.         STRUCT    et_TaskMsgPort,MP_SIZE
  78.         LABEL    ETask_SIZEOF    ;_never_ depend on this size!
  79.  
  80.  
  81. CHILD_NOTNEW    EQU    1    ;function not called from a new style task
  82. CHILD_NOTFOUND    EQU    2    ;child not found
  83. CHILD_EXITED    EQU    3    ;child has exited
  84. CHILD_ACTIVE    EQU    4    ;child has exited
  85.  
  86.  
  87. ;Stack swap structure as passed to StackSwap()
  88. ;
  89.  STRUCTURE    StackSwapStruct,0
  90.         APTR    stk_Lower    ;Lowest byte of stack
  91.         ULONG    stk_Upper    ;Upper end of stack (size + Lowest)
  92.         APTR    stk_Pointer    ;Stack pointer at switch point
  93.         LABEL    StackSwapStruct_SIZEOF
  94.  
  95.  
  96. ;------ TC_FLAGS Bits:
  97.  
  98.     BITDEF  T,PROCTIME,0
  99.     BITDEF  T,ETASK,3
  100.     BITDEF  T,STACKCHK,4
  101.     BITDEF  T,EXCEPT,5
  102.     BITDEF  T,SWITCH,6        ;Enable TC_SWITCH point
  103.     BITDEF  T,LAUNCH,7        ;Enable TC_LAUNCH point
  104.  
  105.  
  106. ;------ Task States:
  107.  
  108. TS_INVALID  EQU     0
  109. TS_ADDED    EQU     TS_INVALID+1
  110. TS_RUN        EQU     TS_ADDED+1
  111. TS_READY    EQU     TS_RUN+1
  112. TS_WAIT     EQU     TS_READY+1
  113. TS_EXCEPT   EQU     TS_WAIT+1
  114. TS_REMOVED  EQU     TS_EXCEPT+1
  115.  
  116.  
  117. ;------ System Task Signals:
  118.  
  119.     BITDEF    SIG,ABORT,0
  120.     BITDEF    SIG,CHILD,1
  121.     BITDEF    SIG,BLIT,4    ; Note: same as SINGLE
  122.     BITDEF    SIG,SINGLE,4    ; "single-threaded".  Note: same as BLIT
  123.     BITDEF    SIG,INTUITION,5
  124.     BITDEF    SIG,DOS,8
  125.  
  126.  
  127. SYS_SIGALLOC    EQU    $0FFFF        ; pre-allocated signals
  128. SYS_TRAPALLOC    EQU    $08000        ; pre-allocated traps
  129.  
  130.     ENDC    ; EXEC_TASKS_I
  131.